package main

import (
	"fmt"
	"strconv"
)

type StrTo string

func (f StrTo) MustInt() int {
	v, _ := f.Int()
	return v
}

func (f StrTo) Int() (int, error) {
	v, err := strconv.ParseInt(f.String(), 10, 0)
	return int(v), err
}

func (f StrTo) String() string {
	return string(f)
}

func main() {
	// 能成功转换的字符串
	validStr := StrTo("123")

	// 使用 MustInt()
	resultMustInt := validStr.MustInt()
	fmt.Printf("MustInt() 结果: %d\n", resultMustInt)

	// 使用 Int()
	resultInt, err := validStr.Int()
	if err != nil {
		fmt.Printf("转换失败: %v\n", err)
	} else {
		fmt.Printf("Int() 结果: %d\n", resultInt)
	}

	// 不能成功转换的字符串
	invalidStr := StrTo("abc")

	// 使用 MustInt()
	resultMustIntInvalid := invalidStr.MustInt()
	fmt.Printf("MustInt() 结果（无效输入）: %d\n", resultMustIntInvalid)

	// 使用 Int()
	resultIntInvalid, errInvalid := invalidStr.Int()
	if errInvalid != nil {
		fmt.Printf("转换失败（无效输入）: errorValue:%v %v\n", resultIntInvalid, errInvalid)
	} else {
		fmt.Printf("Int() 结果（无效输入）: %d\n", resultIntInvalid)
	}
}
